The present invention relates generally to a word processing system for composing and editing a text of characters on a display screen.
One known type of word processing system displays characters on a cathode ray tube (CRT) screen, the format being such that the screen represents a page of text. A refresh memory stores characters to be displayed in coded form. The codes are sequentially read out of memory and applied to a character generator which draws the character on the CRT screen. The entire content of the memory is repeatedly read out many times per second and presented to the character generator to continually draw the characters on the screen and thereby refresh the display.
A keyboard is generally provided, so that displayed text may be edited by either writing or erasing characters on the CRT screen. The character location on the screen where editing is to occur is designated with a marker or cursor symbol. This symbol is displayed on the screen and can be moved to different character locations by operating certain keyboard controls.
Several different techniques for organizing the refresh memory have been used. One method, termed "one-to-one correspondence", is to provide one character location in memory for each character location on the display screen. Thus, if there are 2048 memory locations, the CRT screen can display a total of 2048 characters. Typically, there are 80 characters per line, so about 25 lines of text can be displayed with this method. Control circuitry is provided to produce "carriage return" and "line feed" operations automatically at the right-hand margin of text to deflect the CRT beam to the left margin and step it down one line to begin tracing the first characters of a new line. Since each character in the field of displayed text has a corresponding location in memory, the cursor can be moved anywhere in the display field to designate a position for editing. However, this type of memory format has the disadvantage that memory locations are in effect wasted by storing unused trailing blanks following the last character in a line of text, as well as all unused blanks which form a blank line in the display.
Another method of organizing the refresh memory, termed "stored carriage return" is to store only as many characters in the memory as are actually displayed. Lines of text are of variable length and a "carriage return" (CR) symbol is stored in memory at the end of each line. Also, a CR symbol is stored wherever a blank line is to occur. In operation of this type of system, each time a CR symbol is encountered, the CRT beam is deflected to the left margin and stepped down one line. Unused trailing blanks and blank lines in the displayed text have no corresponding location in memory and do not waste memory space. Consequently, in the case of a 2048-character memory, as described above, the amount of text that can be displayed is generally significantly greater than the 25 lines possible with the "one-to-one correspondence" technique.
When the stored CR memory technique is used and text editing is performed, the cursor is moved to the desired location on the display screen where a character is to be added or deleted. However, it previously has been required to limit cursor movement to the portions of the text that have corresponding character locations in the memory. Cursor movement has been restricted to the forward and backward directions in order to keep track of where the cursor is. In other words, the cursor follows the path of the CRT beam: the only movement permitted is horizontally along a line of text, and vertically downward one line at a time from the end of one line to the beginning of the next line, or upward from the beginning of a line to the end of the next preceding line. One disadvantage of this arrangement is that such restricted cursor movement is performed stepwise one character at a time, and the time required to move the cursor between two points in the text is often undesirably long. Another disadvantage is that characters cannot be quickly added or delected at a location beyond the end of a line because the cursor cannot be moved directly to that location.